home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vbpcopy / jmfile.bas < prev    next >
BASIC Source File  |  1998-10-06  |  6KB  |  218 lines

  1. Attribute VB_Name = "JMFileSubs"
  2. Option Explicit
  3. Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
  4. Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
  5.  
  6. Function JMTestDirectory(argDirectory As String) As Integer
  7.     Dim wrkDirectory As String
  8.     Dim wrkString As String
  9.     JMTestDirectory = False
  10.     On Error GoTo JMTestDirectoryError
  11.     wrkDirectory = Trim$(argDirectory)
  12.     Select Case Len(wrkDirectory)
  13.     Case 0, 1
  14.     Case 2
  15.         If (Mid$(wrkDirectory, 2, 1) = ":") Then JMTestDirectory = True
  16.     Case 3
  17.         If (Mid$(wrkDirectory, 2, 1) = ":" And Mid$(wrkDirectory, 3, 1) = "\") Then
  18.             JMTestDirectory = True
  19.         End If
  20.     Case Else
  21.         wrkString = Dir$(wrkDirectory, 16)
  22.         If (wrkString <> "") Then JMTestDirectory = True
  23.     End Select
  24.     Exit Function
  25. JMTestDirectoryError:
  26.     Err.Clear
  27.     Exit Function
  28. End Function
  29.  
  30. Function JMAddMissingBackslash(argInput As String) As String
  31.     On Error Resume Next
  32.     JMAddMissingBackslash = argInput
  33.     If (argInput = "") Then Exit Function
  34.     If (Right$(argInput, 1) <> "\") Then
  35.         JMAddMissingBackslash = argInput & "\"
  36.     End If
  37. End Function
  38.  
  39. Public Function JMShortFileName(argFile As String) As String
  40.     Dim wrkFile As String
  41.     Dim wrkFlag As Long
  42.     Dim wrkLength As Integer
  43.     On Error Resume Next
  44.     JMShortFileName = argFile
  45.     If (argFile = "") Then Exit Function
  46.     wrkLength = 400
  47.     wrkFile = Space(wrkLength)
  48.     wrkFlag = GetShortPathName(argFile, wrkFile, wrkLength)
  49.     wrkLength = lstrlen(wrkFile)
  50.     JMShortFileName = Left$(wrkFile, wrkLength)
  51. End Function
  52.  
  53. Public Function JMExtractFileName(argPath As String) As String
  54.     Dim wrkPos As Integer
  55.     On Error Resume Next
  56.     JMExtractFileName = ""
  57.     If (argPath <> "") Then
  58.         wrkPos = JMStringLastBackslash(argPath)
  59.         If (wrkPos > 0) Then
  60.             JMExtractFileName = Mid(argPath, wrkPos + 1)
  61.         Else
  62.             JMExtractFileName = argPath
  63.         End If
  64.     End If
  65. End Function
  66.  
  67. Function JMStringLastBackslash(argPath As String) As Integer
  68.     Dim wrkPos As Integer
  69.     Dim wrkPos2 As Integer
  70.     On Error Resume Next
  71.     JMStringLastBackslash = 0
  72.     wrkPos = 0
  73.     wrkPos2 = 0
  74.     If (argPath = "") Then Exit Function
  75.     Do
  76.         wrkPos = InStr(wrkPos2 + 1, argPath, "\")
  77.         If (wrkPos = 0) Then
  78.             JMStringLastBackslash = wrkPos2
  79.             Exit Function
  80.         End If
  81.         wrkPos2 = wrkPos
  82.     Loop
  83. End Function
  84.  
  85. Public Function JMExtractFileExtension(argPath As String) As String
  86.     Dim wrkPos As Integer
  87.     On Error Resume Next
  88.     JMExtractFileExtension = ""
  89.     If (argPath <> "") Then
  90.         wrkPos = JMStringLastDot(argPath)
  91.         If (wrkPos > 0) Then
  92.             JMExtractFileExtension = Mid(argPath, wrkPos + 1)
  93.         End If
  94.     End If
  95. End Function
  96.  
  97. Function JMStringLastDot(wrkInput As String)
  98.     Dim wrkPos As Integer
  99.     Dim wrkPos2 As Integer
  100.     On Error Resume Next
  101.     JMStringLastDot = 0
  102.     wrkPos = 0
  103.     wrkPos2 = 0
  104.     If (wrkInput = "") Then Exit Function
  105.     Do
  106.         wrkPos = InStr(wrkPos2 + 1, wrkInput, ".")
  107.         If (wrkPos = 0) Then
  108.             JMStringLastDot = wrkPos2
  109.             Exit Function
  110.         End If
  111.         wrkPos2 = wrkPos
  112.     Loop
  113. End Function
  114.  
  115. Function JMFileExists(argFile As String)
  116.     Dim wrkFree As Integer
  117.     On Error Resume Next
  118.     JMFileExists = False
  119.     On Error GoTo JMFileExistsError
  120.     If (argFile = "") Then Exit Function
  121.     wrkFree = FreeFile
  122.     Open argFile For Input As wrkFree
  123.     JMCloseFile wrkFree
  124.     JMFileExists = True
  125.     On Error Resume Next
  126.     Exit Function
  127. JMFileExistsError:
  128.     Err.Clear
  129.     JMCloseFile wrkFree
  130.     Exit Function
  131. End Function
  132.  
  133. Sub JMCloseFile(argFile As Integer)
  134.     On Error GoTo JMCloseFileError
  135.     Close argFile
  136. JMCloseFileError:
  137.     Exit Sub
  138. End Sub
  139.  
  140. Function JMOpenInputFile(argFile As String) As Integer
  141.     JMOpenInputFile = False
  142.     On Error GoTo JMOpenInputFileError
  143.     Open argFile For Input Access Read As #1
  144.     JMOpenInputFile = True
  145. JMOpenInputFileError:
  146.     Exit Function
  147. End Function
  148.  
  149. Function JMOpenOutputFile(argFile As String) As Integer
  150.     JMOpenOutputFile = False
  151.     On Error GoTo JMOpenOutputFileError
  152.     Open argFile For Output Access Write As #2
  153.     JMOpenOutputFile = True
  154. JMOpenOutputFileError:
  155.     Exit Function
  156. End Function
  157.  
  158. Public Function JMFileCopy(argSource As String, argDestination As String) As Integer
  159.     JMFileCopy = False
  160.     On Error GoTo JMFileCopyError:
  161.     If (JMFileExists(argSource) = False) Then Exit Function
  162.     If (JMFileExists(argDestination) = True) Then Exit Function
  163.     FileCopy argSource, argDestination
  164.     JMFileCopy = True
  165. JMFileCopyError:
  166.     Exit Function
  167. End Function
  168.  
  169. Function JMShortFilePathDisplay(argPath As String) As String
  170.     Dim kk As Integer
  171.     Dim wrkStringLength As Integer
  172.     Dim wrkPos1 As Integer
  173.     Dim wrkPos2 As Integer
  174.     Dim wrkSlashes As Integer
  175.     On Error Resume Next
  176.     wrkStringLength = Len(argPath)
  177.     wrkSlashes = 0
  178.     wrkPos1 = 0
  179.     wrkPos2 = 0
  180.     For kk = 1 To wrkStringLength
  181.         Select Case Mid$(argPath, kk, 1)
  182.         Case "\"
  183.             wrkSlashes = wrkSlashes + 1
  184.             If (wrkSlashes = 2) Then wrkPos1 = kk
  185.             wrkPos2 = kk
  186.         End Select
  187.     Next kk
  188.     If (wrkSlashes < 4) Then
  189.         JMShortFilePathDisplay = argPath
  190.         Exit Function
  191.     End If
  192.     JMShortFilePathDisplay = Left$(argPath, wrkPos1) & "..." & Mid$(argPath, wrkPos2)
  193. End Function
  194.  
  195. Public Function JMExtractFileNameOnly(argFile As String) As String
  196.     Dim wrkPos As Integer
  197.     Dim wrkString As String
  198.     On Error Resume Next
  199.     wrkString = JMExtractFileName(argFile)
  200.     If (wrkString <> "") Then
  201.         wrkPos = JMStringLastDot(wrkString)
  202.         If (wrkPos > 0) Then
  203.             wrkString = Left$(wrkString, wrkPos - 1)
  204.         Else
  205.             wrkString = wrkString
  206.         End If
  207.     End If
  208.     JMExtractFileNameOnly = wrkString
  209. End Function
  210.  
  211. Public Sub JMOutputPrint(argString As String)
  212.     On Error GoTo JMOutputPrintError:
  213.     Print #2, argString;
  214. JMOutputPrintError:
  215.     Exit Sub
  216. End Sub
  217.  
  218.